//使用base64来解析JWT令牌
import  { Base64 } from 'js-base64';
//创建一个类
class auth {
    //定义保存的个人信息格式
    person = {
        username:null,
        password:null,
        authorName:null,
        headUrl:null,
        gender:null,
    }

    //登陆成功后，保存token令牌
    saveToken(token) {
        //一、保存令牌
        localStorage.setItem("loginToken", token);
        //二、保存登录人信息，需要解析JWT令牌
        //分割JWT令牌，得到字符串数组
        let strArray = token.split(".");
        //获取载荷部分
        let payload = strArray[1];
        //使用Base64解码载荷payload，转换成JSON对象，因为包含了当前登录人的信息
        let authorInfo = Base64.decode(payload); 
        console.log(authorInfo);
        //保存登录信息
        localStorage.setItem("loginUser", authorInfo);
    }

    //获取登录人信息
    getLoginUser() {
        let jsonStr = localStorage.getItem("loginUser");
        if (jsonStr == null || jsonStr == undefined) {
            return this.person;
        }else{
            //读取出来只是字符串，需要转换成JSON对象
            this.person = JSON.parse(jsonStr);
            this.person.role = 'admin'
        }
        return this.person;
    }

    //个人信息修改后，需要更新登录人信息
    updateLoginUser(authorInfo) {
        //需要把传进来的JSON对象转换成JSON字符串
        let jsonstr = JSON.stringify(authorInfo);
        localStorage.setItem("loginUser",jsonstr);
    }

    //获取当前登录人令牌
    getToken() {
        let token = localStorage.getItem("loginToken");
        return token;
    }

    //是否登录，根据loginToken是否存在来判断登录状态
    isLogin() {
        let token = localStorage.getItem("loginToken");
        if (token == undefined || token == null) {
            return false;
        }else{
            return true;
        }
    }

    //登出，删除登录人信息即可
    logout() {
        localStorage.removeItem("loginToken");
        localStorage.removeItem("loginUser");
    }
    getRole(){
        return this.getLoginUser().role
    }
}
//实例化auth对象
const authInstance = new auth(); 
//默认导出
export default authInstance;